#include <REGX52.H>

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 123; j++)
            ;
    }
}

void main()
{
    unsigned char i;
    //   1111 1111
    // DB 7654 3210
    P2 = 0xFF; // 初始化P2口，全置高（所有LED灭）
    while (1)
    {
        P2_0 = 0;
        delay_ms(200);
        P2_0 = 1;
        P2_1 = 0;
        delay_ms(200);
        P2_1 = 1;
        P2_2 = 0;
        delay_ms(200);
        P2_2 = 1;
        P2_3 = 0;
        delay_ms(200);
        P2_3 = 1;
        P2_4 = 0;
        delay_ms(200);
        P2_4 = 1;
        P2_5 = 0;
        delay_ms(200);
        P2_5 = 1;
        P2_6 = 0;
        delay_ms(200);
        P2_6 = 1;
        P2_7 = 0;
        delay_ms(200);
        // 流水灯反向流动回来
        P2_7 = 1;
        P2_6 = 0;
        delay_ms(200);
        P2_6 = 1;
        P2_5 = 0;
        delay_ms(200);
        P2_5 = 1;
        P2_4 = 0;
        delay_ms(200);
        P2_4 = 1;
        P2_3 = 0;
        delay_ms(200);
        P2_3 = 1;
        P2_2 = 0;
        delay_ms(200);
        P2_2 = 1;
        P2_1 = 0;
        delay_ms(200);
        P2_1 = 1;
        P2_0 = 0;
    }
}